<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    /*
        JS中的自定义对象格式
        var 对象名 = {
            属性名1: 属性值1, 
            属性名2: 属性值2,
            属性名3: 属性值3,
            函数名称:function(形参列表){}
        };

        注意 : 函数可以把 :function 省略
        调用 : 使用对象名调用属性和方法
        需求 : 自定义用户对象,定义属性和方法进行调用
     */
    var user = {
      // 属性
      name: "柳岩",
      age: 18,
      gender: "女",
      // address: ["上海", "北京", "天津"],
      address: {
        addr1: "上海",
              addr2: "北京",
            },
            // 函数
            eat: function () {
              alert("干饭...");
            },
          };

          var joker = {
            name: "小丑",
            address: "哥谭",
            atk() {
              console.log("蝙蝠侠来了");
            }

          };
          console.log(joker);
          joker.atk();
            var jsonObj = JSON.stringify(joker);
            console.log(jsonObj);
            





          // 调用js对象中的属性和函数
          console.log(
            user.name + "--" + user.age + "--" + user.gender + "--" + user.address
          );
          // 需求 : 获取北京这个值
          console.log(user.address.addr2);
          // user.eat();

          console.log("----------------------------------------");

          // ----------------------------------------JSON字符串

    /*
        JSON 是通过 JavaScript 对象标记法书写的字符串文本。格式和js自定义对象类似,只是属性名必须是双引号字符串形式
        作用 : 由于其语法简单，层次结构鲜明，现多用于作为数据载体，在网络中进行数据传输。

        格式 : var 变量名 = '{"key1": value1, "key2": value2}';
        注意 : 
            1 json字符串整体需要使用单引号
            2 json中的数据以键值对形式存在 , 值的类型可以是
                1) 数字（整数或浮点数）
                2) 字符串（在双引号中）
                3) 逻辑值（true 或 false）
                4) 数组（在方括号中）
                5) 对象（在花括号中）
                6) null
        
        json字符串和js对象之间的转换
            1 json字符串转成js对象 : var js对象变量名   = JSON.parse(json字符串);
            2 js对象转成json字符串 : var json对象变量名 = JSON.stringify(js对象);
        
        需求 : 定义json字符串,并获取json中的数据
      */
    var jsonStr = '{ "name":"李沁" , "age":18 , "address":["上海" , "北京" ,"天津"] }';

    // // json --> js对象
    // var jsObj = JSON.parse(jsonStr);
    // console.log(jsObj.name);

    // // js对象 --> json
    // var jsonString = JSON.stringify(user);
    // console.log(jsonString);
  </script>
</html>
